#include "cvagasitem.h"

CVagasItem::CVagasItem(QObject *parent) :
    QObject(parent)
{
    _marcado = false;
    _vagaNova = false;
    _infoContato = NULL;
}

QHash<int, QByteArray> CVagasItem::roleNames()
{
    QHash<int, QByteArray> roles;
    roles[cidadeRole] = "cidade";
    roles[estadoRole] = "estado";
    roles[dataRole] = "dataVaga";
    roles[cargoRole] = "cargo";
    roles[descricaoRole] = "descricao";
    roles[empresaRole] = "empresa";
    roles[contatoRole] = "contato";
    roles[subjectRole] = "subjectEmail";
    roles[codigoRole] = "codigoVaga";
    roles[marcadoRole] = "marcado";
    roles[infoContatoRole] = "infoContato";
    roles[vagaNovaRole] = "vagaNova";
    return roles;
}

QVariant CVagasItem::dados(int role)
{
    switch(role) {
    case cidadeRole:
        return _cidade;
    case estadoRole:
        return _estado;
    case dataRole:
        return _data;
    case cargoRole:
        return _cargo;
    case descricaoRole:
        return _descricao;
    case empresaRole:
        return _empresa;
    case contatoRole:
        return _contato;
    case subjectRole:
        return _subjectEmail;
    case codigoRole:
        return _codigo;
    case marcadoRole:
        return _marcado;
    case vagaNovaRole:
        return _vagaNova;
    case infoContatoRole:
        if (_infoContato == NULL)
            return QVariant(QVariant::Invalid);
        else
            return qVariantFromValue(_infoContato);
    }
    return QVariant();
}

CVagasItem *CVagasItem::Clone(CVagasItem *outro)
{
    CVagasItem *item = new CVagasItem();
    item->setCargo(outro->getCargo());
    item->setCidade(outro->getCidade());
    item->setCodigo(outro->getCodigo());
    item->setContato(outro->getContato());
    item->setData(outro->getData());
    item->setDescricao(outro->getDescricao());
    item->setEmpresa(outro->getEmpresa());
    item->setEstado(outro->getEstado());
    item->setMarcado(outro->getMarcado());    
    item->setSubjectEmail(outro->getSubjectEmail());
    item->setVagaNova(outro->getVagaNova());
    if (outro->getInfoContato() != NULL)
    {
        CVagasItemDadoContato *info = new CVagasItemDadoContato(item);
        info->setDataContato(outro->getInfoContato()->getDataContato());
        item->setInfoContato(info);
    }
    return item;
}

void CVagasItem::AtualizarDadosContato(QDateTime dataContato)
{
    if (_infoContato == NULL)
        _infoContato = new CVagasItemDadoContato(this);
    _infoContato->setDataContato(dataContato);
    emit dataChanged();
}

void CVagasItem::resetarVagaContatada()
{
    if (_infoContato != NULL)
    {
        delete _infoContato;
        _infoContato = NULL;
        emit dataChanged();
    }
}
